package com.nbufe.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.nbufe.domain.ResponseResult;
import com.nbufe.domain.dto.target.AddTargetDto;
import com.nbufe.domain.dto.target.EditTargetDto;
import com.nbufe.domain.dto.target.QueryEmissionTargetDto;
import com.nbufe.domain.dto.target.QueryTargetPageDto;
import com.nbufe.domain.entity.CarbonTarget;


/**
 * (CarbonTarget)表服务接口
 *
 * @author luzhiheng
 * @since 2024-01-10 10:28:34
 */
public interface CarbonTargetService extends IService<CarbonTarget> {

    /**
     * 添加碳目标
     * @param dto
     */
    void addTarget(AddTargetDto dto);

    /**
     * 分页查询目标
     * @param dto
     * @return
     */
    ResponseResult queryTargetPage(QueryTargetPageDto dto);

    /**
     * 启用目标
     * @param id
     * @return
     */
    ResponseResult enableTarget(Long id);

    /**
     * 禁用目标
     * @param id
     * @return
     */
    ResponseResult unEnableTarget(Long id);

    /**
     * 编辑目标
     * @param dto
     */
    void editTarget(EditTargetDto dto);

    /**
     * 查询指定生产阶段、工序、年月的碳排放量
     * @param dto
     * @return
     */
    ResponseResult queryStageProcessYearMonthEmission(QueryEmissionTargetDto dto);

    /**
     * 查询所有碳目标
     * @return
     */
    ResponseResult queryAllTarget();

    /**
     * 查询预警信息详情
     * @param id 参数
     * @return 结果
     */
    ResponseResult queryWarningDetail(Long id);

    /**
     * 查询已结束/进行中 的目标
     * @param isUnderway 0-已结束 1-进行中
     * @return
     */
    ResponseResult queryAllTargetByDate(Integer isUnderway);

    /**
     * 查询碳目标进度排行榜
     * @return
     */
    ResponseResult queryTargetRank();

    /**
     * 查询前两个最高的目标进度
     * @return
     */
    ResponseResult queryTwoHighTarget();
}
